With some protocols used for data communication via a network, a confirmation response is returned from a unit which receives data. TCP/IP (transmission control protocol/internet protocol) is among such communication protocols. With TCP/IP, a network layer protocol is IP and a transport layer protocol is TCP or UDP (user datagram protocol). If TCP is used as a transport layer protocol, a confirmation response to received data is made. With TCP reliable communication is realized by necessarily transmitting a confirmation response to a packet transmitted.
FIG. 18 illustrates an example basic operation of transmitting and receiving a packet on the basis of TCP. In this example, a confirmation response to data transmitted from a source host 911 is returned from a destination host 912.
First, the source host 911 generates a TCP packet including the data to be transmitted (by adding a TCP header to the data to be transmitted), generates an IP packet including the TCP packet, and transmits the IP packet to the destination host 912. The destination host 912 which receives the IP packet takes the TCP packet out of the IP packet and takes the data out of the TCP packet. At this time the destination host 912 passes the data taken out of the TCP packet to an upper application and automatically returns a confirmation response to the source host 911. The confirmation response is automatically returned in the TCP protocol stack regardless of instructions from the upper application.
With TCP this confirmation response is referred to as an “acknowledge” (hereinafter abbreviated as an ACK). The destination host 912 which receives the TCP packet returns an ACK in order to indicate that the data is received. When the source host 911 receives the ACK, the source host 911 recognizes that the data transmission is completed, and proceeds to next operation. If the source host 911 cannot receive an ACK after a short wait, then the source host 911 considers that the transmission has failed, and performs the operation of retransmitting the data.
When data is transmitted, an ACK is returned in this way. Accordingly, round trip time (RTT) for the data can be measured by monitoring packets used for transmitting the data and the ACK on a network on the basis of TCP. That is to say, the data is transmitted, and the ACK is returned to indicate that the data is received. Therefore, RTT is a period from the time of the data being transmitted to the time of the ACK being received. For example, the quality of the network can be grasped by measuring the RTT.
With the basic operation depicted in FIG. 18, the source host 911 performs next data transmission after receiving the ACK of the transmitted data returned from the destination host 912. That is to say, there is a data transmission interval. As a result, data transmission efficiency falls. Accordingly, the source host 911 performs data transmission continuously without waiting for the ACK. The size of data which the source host 911 can transmit without waiting for the ACK is referred to as window size. The destination host 912 informs the source host 911 of window size by which the source host 911 transmits data to the destination host 912.
If the destination host 912 which receives data returns an ACK instantly, the destination host 912 may designate a small value as window size. The reason for this is that a receiving buffer is filled with the data which the destination host 912 has just received. If the source host 911 which is informed of the small window size transmits data by that size and waits for an ACK to arrive, then network use efficiency falls. Therefore, the following method is adopted. When the destination host 912 receives data, the destination host 912 does not return an ACK instantly. That is to say, the destination host 912 returns an ACK after predetermined time. This is referred to as a delayed confirmation response.
To be concrete, the following processes are performed for a delayed confirmation response.                Until data is received twice, a confirmation response is not made (first pattern).        A confirmation response is delayed for a maximum of 0.5 seconds except in the above case (second pattern).        
An ACK delayed in accordance with the second pattern is referred to as a delayed ACK. With the first pattern one ACK is returned for two pieces of data. In this case, the provision that ACKs need not be returned for all pieces of data transmitted is used. That is to say, an ACK includes a sequence number of a piece of data which the destination host 912 expects the source host 911 to transmit next. The source host 911 determines by the sequence number included in the ACK that all pieces of data sequence numbers of which come before the above sequence number have arrived correctly at the destination host 912. This is used in the case of a delayed confirmation response made in accordance with the first pattern. That is to say, ACKs are not returned for all pieces of data from the first and one ACK is returned for two pieces of data. By doing so, the number of transmitted packets falls and network use efficiency improves.
(See, for example, Japanese Laid-Open Patent Publication No. 2001-111618 and Japanese Laid-Open Patent Publication No. 2002-374301.)
However, when RTT is measured in conventional data communication in which a delayed confirmation response is made, it is impossible to distinguish an ACK made in accordance with the first pattern from an ACK made in accordance with the second pattern. With the second pattern RTT measured includes the time of a “Delayed ACK” made by intentionally delaying an ACK. Therefore, RTT measured in the case of the second pattern does not correctly indicate delay time taken to transmit and receive data on a network. There is a possibility that RTT measured includes delay time for making a “Delayed ACK” in accordance with the second pattern. As a result, the reliability of RTT is low (RTT may not be correct).